---
title: "Proposed system font stacks"
topics: ["web", "typography", "fonts", "css", "design"]
DATE: 2024-12-27
---

I've seen [Modern Font Stacks](https://modernfontstacks.com/). I agree that there are many cases
where system fonts are fine, but the stacks there have some problems, especially with GNU/Linux
devices.

On GNU/Linux, there are usually two sets of metrically-compatible Microsoft font clones:
Liberation and GNU FreeFont. They have a huge difference. Liberation are original designs, but
not very good ones. FreeFont are descended from TeX fonts, so they look almost exactly like
Helvetica, Times and Courier.

## The stacks

### GUI

```
system-ui, -apple-system, BlinkMacSystemFont, Roboto, "Noto Sans", "Segoe UI", Inter, Cantarell,
Ubuntu, "DejaVu Sans", "Bitstream Vera Sans", "Sans", "Helvetica Neue", "Helvetica",
"Lucida Grande", sans-serif
```

These fonts are used by the OS and designed to be pleasant to read at any size, and have features
such as weights.

Note how the intent is to avoid Arial and Liberation fonts, which are not very pleasant.

* `system-ui` is a standard, but not all browsers support it.
* `-apple-system` and `BlinkMacSystemFont` are pre-standard names for the system font that only
  work on Apple devices.
* Roboto is the font in Android and some GNU/Linux distributions.
* Noto Sans is the fallback font for Roboto, as well as the font of KDE.
* Segoe UI is the font of Windows.
* Inter will likely be the font of GNOME in the future.
* Cantarell is the font of GNOME (at least until they change it to Inter).
* Ubuntu is the font of Ubuntu (obviously).
* DejaVu Sans was popular on many Unixes in the past.
* Bitstream Vera Sans is the font DejaVu Sans was based on.
* Sans usually refers to one of the above two fonts on GNU/Linux.
* Helvetica Neue was the old font of MacOS and iOS.
* Helvetica was the even older font of iOS.
* Lucida Grande was the even older font of MacOS.
* sans-serif is the generic sans-serif font.

### Transitional serif

```
Charter, "Bitstream Charter", "Source Serif 4", "Source Serif Pro", source-serif-pro, "Noto Serif",
"FreeSerif", "Nimbus Roman", "Times New Roman", "Times", serif
```

Transitional serifs appeared around 1750 and feature medium contrast.

The intent here is also to avoid Liberation Serif, so FreeSerif/Nimbus Roman (which are an
actual clone of Times) are preferred to Times New Roman which falls back to Liberation Serif
on most GNU/Linux distributions. In my opinion Cambria, used in the original Modern Font Stacks,
is not a very nice font.

### Old style serif

```
Garamond, Palatino, "Palatino Linotype", "URW Palladio L", "Book Antiqua", "URW Bookman L",
Bookman, P052, C059, serif; 
```

Old style serifs appeared early, in the Renaissance period, and were developed from calligraphy.

### Humanist sans

```
Cantarell, "Gill Sans Nova", "Gill Sans", "Gill Sans MT", Lato, "Source Sans Pro", "Source Sans 3",
source-sans-pro, Skeena, Candara, Ubuntu, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans",
"Trebuchet MS", sans-serif
```

Humanist sans serifs, unlike neo-grotesques, have rounder shapes and more stroke contrast, and
usually, true italics.

This is very different from the Modern Font Stacks one. I don't like the idea of using Ubuntu when
Cantarell and Lato exist, which are much closer to a humanist font that isn't very unusual.

### Geometric sans

```
"Futura PT", "Futura LT", Futura, Lexend, "Readex Pro", Avenir, "Avenir Next", "Century Gothic",
"Avant Garde", "URW Gothic", sans-serif
```

Geometric sans serifs are usually based on circles and straight lines. They first appeared in the
1920s.

Again, I've included some free fonts that don't suck.

### Neo-grotesque GUI

```
Roboto, Inter, "SF Pro", Aptos, Geist, FreeSans, "Nimbus Sans", "Helvetica Neue", system-ui, -apple-system,
BlinkMacSystemFont, sans-serif
```

Neo-grotesque fonts are a category of sans-serif typefaces that have more complex shapes than
geometric fonts, but lower contrast than humanist fonts. This stack prefers the more modern
fonts which appeared in the digital era.

Yes, I'm avoiding excessive spreading of Inter.

### Neo-grotesque (Swiss)

```
FreeSans, "Nimbus Sans", "Helvetica Neue", Helvetica, Aptos, Geist, Inter, Roboto, "SF Pro",
"Microsoft Sans Serif", Arial, sans-serif
```

This prefers Helvetica or its clones, more classic neo-grotesque fonts.

### Monospace (slab/typewriter)

```
"Courier Prime", FreeMono, "Cutive Mono", Nimbus Mono PS", "Courier New", Courier, monospace
```

Monospaced fonts have the same width for all characters. This has a preference for fonts like
Courier which use slab serifs and originate from typewriters.

### Monospace (sans/code)

```
ui-monospace, "Roboto Mono", "Source Code Pro", source-code-pro, "SF Mono", "IBM Plex Mono",
Inconsolata, Menlo, Consolas, "Droid Sans Mono", "DMCA Sans Serif", "Hack", "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", monospace
```

This prefers sans-serif monospace fonts that are not too quirky and are designed for technical
applications.

### FuN MoNoSpAcE

```
"Cascadia Code", "Fira Code", "Fira Mono", "JetBrains Mono", "Ubuntu Mono", "Operator Mono",
"Roboto Mono", "Source Code Pro", "SF Mono", "IBM Plex Mono", "Inconsolata", "Menlo", "Consolas",
"Droid Sans Mono", "DMCA Sans Serif", "Hack", "DejaVu Sans Mono", "Bitstream Vera Sans Mono",
monospace
```

Of course, this prefers "fun" coding fonts with script italics, low f bar, unusual digits, and
let's not forget ligatures!

### I-wanna-be-a-mac

```
"SF Pro", apple-system, BlinkMacSystemFont, "San Francisco", Inter, Roboto, Geist, FreeSans,
"Nimbus Sans", "Helvetica Neue", Helvetica, "Arial Nova", "Arial", sans-serif
```

This is for all who want to be like Apple - that is the major reason they prefer Inter.

### I-wanna-be-a-mac mono

```
"SF Mono", "JetBrains Mono", "Roboto Mono", ui-monospace, "Geist Mono", "Fira Mono", "Fira Code",
Hack, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Menlo, Consolas, monospace
```

This copies SF Mono.

### Industrial

```
"D-DIN", Bahnschrift, Grandview, "DIN Alternate",  "FF DIN", "URW DIN", DIN, "Alte DIN", "Alte DIN 1451",
"Alte DIN 1451 Mittelschrift", Barlow, "SF Compact", "SF Pro", Inter, Roboto, sans-serif
```

Industrial typefaces generally use straight lines instead of ellipses, and are often used in
technical applications or signage.

This prefers the DIN family which is the font used for road signs in Germany.

### Rounded

```
"SF Pro Rounded", "Hiragino Maru Githic", "Quicksand", "Varela Round", "Nunito", "Lato",
"Arial Rounded MT Bold", sans-serif
```

Rounded fonts are sans-serif but have rounded terminals.

### Slab serif

```
"Roboto Slab", "Rockwell Nova", "Rockwell", "Sitka Small", "Noto Serif", serif
```

Slab serifs have more blocky serifs.

### Didone

```
Didot, "Bodoni MT", "Noto Serif Display", "Playfair Display", "Abril Fatface", "URW Palladio L",
"Noto Serif", serif
```

Didone serifs have very high contrast and thin serifs.

### Narrow sans (display)

```
Oswald, Anton, Impact, "Arial Narrow", sans-serif
```

Bold, narrow sans-serif fonts, only for headings.

### Print handwriting

```
"Segoe Print", "Bradley Hand", Comic Neue", "Comic Sans MS", "Comic Sans", "TSCu_Comic",
"Coming Soon", "Knewave", casual, cursive
```

These mimic handwriting but without cursive (joined) letters.

### Cursive

```
"Segoe Script", "Lucida Handwriting", "Dancing Script", cursive
```

These mimic cursive (joined) handwriting.

### Semi-humanist sans???

```
"DejaVu Sans", "Bitstream Vera Sans", Verdana, sans-serif
```

Wide, with good readability especially at small sizes on low-resolution screens.

### Condensed semi-humanist sans???

```
"DejaVu Sans Condensed", Tahoma, sans-serif
```

Same as above, but not so wide.
